import pandas as pd
import logging
import os

# 设置日志
logging.basicConfig(
    filename='customer_demand_analysis.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

def main():
    # Excel文件路径
    excel_path = r'c:\Users\HP\OneDrive\Desktop\所有文件\123\project黄飞燕\练习一\c\每个客户的6月份的货运需求量表.xlsx'
    
    # 检查文件是否存在
    if not os.path.exists(excel_path):
        logging.error(f"Excel文件不存在: {excel_path}")
        return
    
    try:
        # 读取Excel文件
        df = pd.read_excel(excel_path)
        logging.info(f"成功读取Excel文件，列名: {df.columns.tolist()}")
        print(f"Excel文件列名: {df.columns.tolist()}")  # 打印列名用于调试
        
        # 确认必要的列
        required_columns = ['客户', '6月份货运需求总量']
        
        # 检查必要的列是否存在
        missing_columns = [col for col in required_columns if col not in df.columns]
        if missing_columns:
            logging.error(f"Excel文件缺少必要的列: {missing_columns}")
            return
        
        # 按货运需求总量降序排序
        df_sorted = df.sort_values(by='6月份货运需求总量', ascending=False)
        
        # 计算总货运量
        total_demand = df_sorted['6月份货运需求总量'].sum()
        
        # 计算占比并保留两位小数
        df_sorted['占比（%）'] = (df_sorted['6月份货运需求总量'] / total_demand * 100).round(2)
        
        # 生成Markdown表格
        markdown_table = '| 排名 | 客户 | 6月份货运需求总量 | 占比（%） |\n'
        markdown_table += '|------|------|------------------|-----------|\n'
        
        for idx, row in df_sorted.iterrows():
            markdown_table += f'| {idx + 1} | {row["客户"]} | {row["6月份货运需求总量"]} | {row["占比（%）"]} |\n'
        
        # 保存表格到Markdown文件
        output_file = 'customer_demand_table.md'
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(markdown_table)
        
        logging.info(f"表格已成功生成并保存到 {output_file}")
        print(f"表格已成功生成: {output_file}")
        
    except Exception as e:
        logging.error(f"处理Excel文件时出错: {str(e)}", exc_info=True)

if __name__ == "__main__":
    main()